package edu.ilstu.mind.ise.ccp;

import edu.ilstu.mind.ise.ccp.logger.Logger;
import edu.ilstu.mind.ise.ccp.mindmodule.MindModule;
import edu.ilstu.mind.ise.ccp.module.Module;

/**
 * Interface for the CentralControlProcessor.
 * 
 * @author Eric Thill
 * 
 */

public interface CentralControlProcessor {
	/**
	 * Set the logger for the CCP
	 * 
	 * @param logger
	 *            The Logger
	 */
	void setLogger(Logger logger);

	/**
	 * Set the mind module. This method cannot be called after init(). This
	 * method cannot be called more than once.
	 * 
	 * @param mindModule
	 *            The MindModule
	 */
	void setMindModule(MindModule mindModule);

	/**
	 * Add a module to the CCP. This method cannot be called after init()
	 * 
	 * @param name
	 *            Name of the Module
	 * @param module
	 *            Module to add
	 */
	void addModule(String name, Module module);

	/**
	 * Initialize Method <br>
	 * Called after setMindModule has been called and all calls to addModule are
	 * complete
	 */
	void init();
}
